package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

//整合mybatis-plus
//一、引入依赖mybatis-plus,已在common pom中完成。
//二、配置
//1.配置数据源。1)导入数据库驱动,finished in common pom    2）在application.yml配置数据源相关数据
//2.配置mybatis-plus  1)使用mapper scanner dao's reference  2)tell mybatis-plus where sql locate in yml
//整合springcache简化缓存开发
//1.引入依赖springbootstartcache,springbootstarterdataredis
//2.写配置（1）自动配置了哪些？cacheAutoconfiguration会导入rediscacheconfiguration;自动配好了缓存管理器。rediscahcemanager
//2)配置使用redis作为缓存
//3.测试使用缓存，几个注解即可。@cache:触发将数据保存到缓存@cacheEvict删除缓存@cacheput不影响方法执行更新缓存@caching组合多个操作@cacheConfig:在类级别共享缓存的相同配置
//1)开户缓存功能。EnableCaching2)使用注解完成缓存工作3)默认行为：如果缓存中有，方法不调用。key默认自动生成，simpleyKey;
//2)缓存的value值，默认使用jdk序列化机制，将序列化后的数据存到到redis。默认ttl时间-1。配置文件来修改ttl。
//3）自定义：指定生成缓存的key,指定缓存的数据的存活时间，
// 4）将数据保存为json.
//cacheAutoconfiguration->rediscacheconfiguration自动配置rediscachemanager->初始化所有缓存->每个缓存决定用什么配置，
//rediscacheconfiguration有就使用，没有就使用默认的。
//->想改缓存配置，只要给容器中放一个redisconfiguration即可。就会用到当前rediscachemanager管理分区中的所有缓存分区。



@EnableRedisHttpSession
@EnableCaching
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
